export interface GraphNode {
  id: string
  label: string
  type: string
  color: string
  size: number
  timestamp: number
}

export interface GraphLink {
  id: string
  source: string
  target: string
  label: string
  weight: number
  timestamp: number
}

export interface GraphData {
  nodes: GraphNode[]
  links: GraphLink[]
  cosmographData: {
    nodes: GraphNode[]
    links: GraphLink[]
  }
}

export interface ConfigOption {
  id: string
  label: string
  type: "text" | "number" | "select" | "file" | "textarea"
  options?: string[]
  defaultValue?: string | number
  accept?: string
  placeholder?: string
}

export interface Algorithm {
  name: string
  description: string
  configOptions: ConfigOption[]
  execute: (config: Record<string, any>) => Promise<any>
}

export interface AlgorithmResult {
  result: any
  steps: string[]
  executionTime: string
} 